package vip.xiaonuo.biz.modular.watchtask.service.impl;

import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import vip.xiaonuo.biz.modular.watchtask.entity.TaskAuditRecord;
import vip.xiaonuo.biz.modular.watchtask.mapper.TaskAuditRecordMapper;
import vip.xiaonuo.biz.modular.watchtask.param.TaskAuditRecordPageParam;
import vip.xiaonuo.biz.modular.watchtask.service.TaskAuditRecordService;
import vip.xiaonuo.common.enums.CommonSortOrderEnum;
import vip.xiaonuo.common.page.CommonPageRequest;

/**
 * 任务审核记录(TaskAuditRecord)表服务实现类
 *
 * @author h
 * @since 2025-11-19 14:46:55
 */
@Service("taskAuditRecordService")
public class TaskAuditRecordServiceImpl extends ServiceImpl<TaskAuditRecordMapper, TaskAuditRecord> implements TaskAuditRecordService {

    @Override
    public Page<TaskAuditRecord> page(TaskAuditRecordPageParam taskAuditRecordPageParam) {
        QueryWrapper<TaskAuditRecord> queryWrapper = new QueryWrapper<>();
        queryWrapper.lambda().eq(TaskAuditRecord::getTaskId, taskAuditRecordPageParam.getTaskId());
        if(ObjectUtil.isAllNotEmpty(taskAuditRecordPageParam.getSortField(), taskAuditRecordPageParam.getSortOrder())) {
            CommonSortOrderEnum.validate(taskAuditRecordPageParam.getSortOrder());
            queryWrapper.orderBy(true, taskAuditRecordPageParam.getSortOrder().equals(CommonSortOrderEnum.ASC.getValue()),
                    StrUtil.toUnderlineCase(taskAuditRecordPageParam.getSortField()));
        } else {
            queryWrapper.lambda().orderByDesc(TaskAuditRecord::getCreateTime);
        }
        return this.baseMapper.selectPage(CommonPageRequest.defaultPage(), queryWrapper);
    }
}
